CREATE OR REPLACE PACKAGE BODY EDIV2.Pack_?CategoriaAduana_Multiple_Despacho AS
/******************************************************************************
   NAME:       Pack_?Categoria_Aduana_Multiple_Despacho
   PURPOSE:

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.0        6/2/2013   Luis Antonio Lara Capetillo       Creacion del Paquete
******************************************************************************/

PROCEDURE  Aduana_Multiple_DespachoInsertarModificar(pnidDocumento NUMBER, pnidAduanaMultiple NUMBER, 
						pcantidad NUMBER, pnidEmbalaje NUMBER, pdescripcion VARCHAR2, 
						pdimensiones VARCHAR2, pnidViaje NUMBER, pregistroBuque VARCHAR2, 
						pfechaArribo VARCHAR2, pjustificacion VARCHAR2, ppedimento NUMBER, 
						pconocimiento VARCHAR2, pnidEmpresa NUMBER, pnumeroSerie VARCHAR2, 
						pnidTipoDespacho NUMBER, plugarDespacho VARCHAR2, pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   ediv2.Aduana_Multiple_Despacho
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO ediv2.Aduana_Multiple_Despacho
	           (nid, nidDocumento, nidAduanaMultiple, 
						cantidad, nidEmbalaje, descripcion, 
						dimensiones, nidViaje, registroBuque, 
						fechaArribo, justificacion, pedimento, 
						conocimiento, nidEmpresa, numeroSerie, 
						nidTipoDespacho, lugarDespacho)
    VALUES     (seq_Aduana_Multiple_Despacho.nextval, pnidDocumento, pnidAduanaMultiple, 
						pcantidad, pnidEmbalaje, pdescripcion, 
						pdimensiones, pnidViaje, pregistroBuque, 
						to_date(pfechaArribo,'DD/MM/YYYY HH24:MI:SS'), pjustificacion, ppedimento, 
						pconocimiento, pnidEmpresa, pnumeroSerie, 
						pnidTipoDespacho, plugarDespacho);
  ELSE
    UPDATE ediv2.Aduana_Multiple_Despacho
    SET    nidDocumento=pnidDocumento, nidAduanaMultiple=pnidAduanaMultiple, 
		cantidad=pcantidad, nidEmbalaje=pnidEmbalaje, descripcion=pdescripcion, 
		dimensiones=pdimensiones, nidViaje=pnidViaje, registroBuque=pregistroBuque, 
		fechaArribo=to_date(pfechaArribo,'DD/MM/YYYY HH24:MI:SS'), justificacion=pjustificacion, pedimento=ppedimento, 
		conocimiento=pconocimiento, nidEmpresa=pnidEmpresa, numeroSerie=pnumeroSerie, 
		nidTipoDespacho=pnidTipoDespacho, lugarDespacho=plugarDespacho
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  Aduana_Multiple_Despacho_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  Aduana_Multiple_Despacho_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;

PROCEDURE  Aduana_Multiple_DespachoConsultar(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pCursor OUT cursor_type)
AS
BEGIN
  OPEN pCursor FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						cantidad, nidEmbalaje, descripcion, 
						dimensiones, nidViaje, registroBuque, 
						fechaArribo, justificacion, pedimento, 
						conocimiento, nidEmpresa, numeroSerie, 
						nidTipoDespacho, lugarDespacho
    FROM   ediv2.Aduana_Multiple_Despacho
    WHERE  nidDocumento=pNidDocumento;
    
  pTransaccion := 1;
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

PROCEDURE  Aduana_Multiple_DespachoDetalleXML(pNidDocumento NUMBER, pTransaccion OUT NUMBER, pEncabezado OUT cursor_type,
                           pDatos OUT cursor_type, pIncidencias OUT cursor_type)
AS
BEGIN
  OPEN pEncabezado FOR
    SELECT d.nid, d.codigo, d.fechacreacion,
           (us.nombre ||' '||us.apellidopat||' '||us.apellidomat) as nombre, d.nidusuario
    FROM   documento d, usuarios us
    WHERE  d.nid=pnidDocumento
    AND    d.nidusuario=us.nid;
    
  OPEN pDatos FOR
    SELECT nid, nidDocumento, nidAduanaMultiple, 
						cantidad, nidEmbalaje, descripcion, 
						dimensiones, nidViaje, registroBuque, 
						fechaArribo, justificacion, pedimento, 
						conocimiento, nidEmpresa, numeroSerie, 
						nidTipoDespacho, lugarDespacho
    FROM   ediv2.Aduana_Multiple_Despacho
    WHERE  nidDocumento=pNidDocumento;
    
  OPEN pIncidencias FOR
    SELECT i.fechaemision, i.descripcion, us.nombre
    FROM   incidencia i, usuarios us
    WHERE  niddocumento=pnidDocumento
    AND    i.nidusuario=us.nid;
    
    pTransaccion := 1;
    
EXCEPTION 
  WHEN OTHERS THEN
    pTransaccion := 0;
END;

--otros

END Pack_?Categoria_Aduana_Multiple_Despacho;
